/**
 * Copyright @2012 中国电信甘肃万维公司 All rights reserved.
 * 中国电信甘肃万维公司 专有/保密源代码,未经许可禁止任何人通过任何* 渠道使用、修改源代码.
 * 日期 2012-7-27 上午10:41:50
 */
package com.oa.cs.agreement.pojo;

import java.util.HashMap;
import java.util.Map;

import com.oa.cs.agreement.util.MapConverter;

/**
 * <p>
 * RequestObject描述:请求对象基类
 * </p>
 * @company 中国电信甘肃万维公司 
 *
 * @project nma-s-agreement
 *
 * @version V2.0.0
 *
 * @author 郭磊(产品部)
 *
 * @date 2012-7-27 上午10:41:50	
 *
 * @class com.oa.s.agreement.pojo.RequestObject
 *
 */
public class RequestObject extends AgreementPojo implements IRequestObject
{
	/** 
	 *  serialVersionUID :  TODO 序列化ID
	 */
	private static final long serialVersionUID = -8380861282728566263L;
	
	/** 
	 *  ARR_SPLIT :  TODO ARR_SPLIT = ","
	 */
	private static final String ARR_SPLIT = ",";
	
	/** 
	 *  parameters :  TODO 本次请求所有接收到的参数
	 */
	private Map<String,String> parameters = null;
	
	/** 
	 *  converter :  TODO Map转换器
	 */
	private MapConverter<String> converter = null;
	
	
	public RequestObject(Map<String,String> parameters)
	{
		this.parameters = (parameters != null && parameters.size() > 0 ? parameters : new HashMap<String,String>(1));
		this.converter = new MapConverter<String>(this.parameters);
	}
	
	/**
	 * TODO 获取参数
	 * @param key 参数key
	 * @return 参数值
	 */
	public String getParameter(String key)
	{
		return this.parameters.get(key);
	}
	
	/**
	 * TODO 获取参数，如果该参数不存在则返回defaultValue
	 * @param key 参数key
	 * @param defaultValue
	 * @return 参数值
	 */
	public Object getParameter(String key , Object defaultValue)
	{
		return this.converter.getParameter(key,defaultValue);
	}
	
	/**
	 * TODO 获取一个整型值
	 * @param key 参数key
	 * @return 参数值
	 */
	public Integer getInteger(String key)
	{
		return this.converter.getInteger(key);
	}
	
	/**
	 * TODO 获取一个长整型值
	 * @param key 参数key
	 * @return 参数值
	 */
	public Long getLong(String key)
	{
		return this.converter.getLong(key);
	}
	
	/**
	 * TODO 获取一个浮点型
	 * @param key 参数key
	 * @return 参数值
	 */
	public Float getFloat(String key)
	{
		return this.converter.getFloat(key);
	}
	
	/**
	 * TODO 获取一个双精度型
	 * @param key 参数key
	 * @return 参数值
	 */
	public Double getDouble(String key)
	{
		return this.converter.getDouble(key);
	}
	
	/**
	 * TODO 获取一个字节型
	 * @param key 参数key
	 * @return 参数值
	 */
	public Byte getByte(String key)
	{
		return this.converter.getByte(key);
	}
	
	/**
	 * TODO 获取一个字符串型
	 * @param key 参数key
	 * @return 参数值
	 */
	public String getString(String key)
	{
		return this.converter.getString(key);
	}
	
	/**
	 * TODO 获取字符串数组，以“，”号
	 * @param key
	 * @return
	 */
	public String[] getParameters(String key)
	{
		String arr = this.getParameter(key);
		if(arr != null && !"".equals(arr.trim()))
		{
			return arr.split(ARR_SPLIT);
		}
		return new String[0];
	}
}
